package com.changgou.test;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

public class TokenTest2 {
    public static void main(String[] args) {
        //1.获取当前系统时间
        long currentTimeMillis = System.currentTimeMillis();
        currentTimeMillis += 10000L;
        Date date = new Date(currentTimeMillis);
        //1.1创建jwt
        JwtBuilder jwtBuilder = Jwts.builder()
                .setId("888")//唯一编号
                .setSubject("小白")//设置主题
                .setIssuedAt(new Date())//设置签发日期
                .setExpiration(date)//设置过期时间
                .claim("AAA", "Q2312")//自定义payload内容
                .claim("BBBB", "1231412412")
                .signWith(SignatureAlgorithm.HS256, "itcast");//签名，参数1表示使用HS256算法，参数2表示设置SecretKey(字符串)
        //2.生成token（也就是jwt）
        String token = jwtBuilder.compact();
        System.out.println(token);
        //3、解析，一定要指明生成token时的秘钥
        Claims claims = Jwts.parser()//jwt解析
                .setSigningKey("itcast")//解析过程中指明秘钥,该秘钥一定要和生成token的秘钥保持一致
                .parseClaimsJws(token)//具体解析的token
                .getBody();//获取解析体内容
        System.out.println(claims);
    }
}
